#include "TestSpinBox.h"
#include<QVBoxLayout>
#include<QSpinBox>
#include<QDebug>
#include<QDoubleSpinBox>
#include<QValidator>

TestSpinBox::TestSpinBox(QWidget *parent) : QWidget(parent)
{
    QVBoxLayout *vlayout = new QVBoxLayout(this);

    // 创建一个整数SpinBox
    QSpinBox *spinBox = new QSpinBox();
    spinBox->setRange(0, 100); // 设置范围
    spinBox->setSingleStep(1); // 设置步长
    spinBox->setPrefix("Value: "); // 设置前缀

    // 创建一个浮点数SpinBox
    QDoubleSpinBox *doubleSpinBox = new QDoubleSpinBox();
    doubleSpinBox->setRange(0.0, 100.0); // 设置范围
    doubleSpinBox->setSingleStep(0.5); // 设置步长
    doubleSpinBox->setSuffix(" °C"); // 设置后缀

    // 创建整数调节框
    QSpinBox *spinBox_2 = new QSpinBox(this);
    spinBox_2->setRange(0, 100);       // 值范围
    spinBox_2->setSingleStep(5);       // 步进值
    spinBox_2->setPrefix("$ ");        // 前缀（如货币符号）
    spinBox_2->setValue(50);           // 默认值

    // 创建浮点数调节框
    QDoubleSpinBox *dblSpinBox = new QDoubleSpinBox(this);
    dblSpinBox->setRange(0.0, 1.0);
    dblSpinBox->setDecimals(3);      // 小数位数
    dblSpinBox->setSuffix(" mm");    // 后缀（单位）
    dblSpinBox->setSingleStep(0.01);
    // 整数数值变化信号
    connect(spinBox_2, QOverload<int>::of(&QSpinBox::valueChanged),
            [](int val){ qDebug() << "New value:" << val; });

    // 浮点数数值变化信号
    connect(dblSpinBox, QOverload<double>::of(&QDoubleSpinBox::valueChanged),
            [](double val){ /* 更新实时预览 */ });

    //​​自定义显示格式​
    spinBox_2->setDisplayIntegerBase(16);  // 显示16进制数
    //键盘加速​​
    spinBox_2->setAccelerated(true);  // 长按箭头时加速变化

    vlayout->addWidget(spinBox);
    vlayout->addWidget(doubleSpinBox);
    vlayout->addWidget(spinBox_2);
    vlayout->addWidget(dblSpinBox);
}
